#! /bin/bash 

# build过程容易假死，为避免这个问题，请在Build前作好如下准备
#    1）为WSL2设置内存上限为物理内存的一半
#    2）关闭其它所有程序
#    3）打开"任务管理 >> 性能" 监控是否假死
#    4) 为了dockerfile文件的通用性，dockerfile中没有为各种源设置国内镜像。 
#    5) 如果在国内，尽可能在早上6点时build，这个时候很快。 因为，中国的出口带宽有限，特别时晚上人多导致从国外进行网络下载慢。

# 如果使用podman，建议设置全局别名
#    sudo vim /etc/profile
#    alias sudo='sudo '
#    alias docker='podman'
# 此时建议执行 `. ./build`  而不是  `./build`

# 2022-1-15发现 podman push 没有DIGEST 没有OS/ARCH 没有LAST PULL 没有COMPRESSED SIZE 相关标签
# 所以放弃podman push的企图，依旧采用docker push
# Podman从入门到放弃一半:  Build+Push依旧采用Docker; 而Pull+Run采用Podman

docker build -t docker.io/chaoskey/pythonlab pythonlab

if [ $? -ne 0 ]; then
    echo "Build pythonlab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi

docker build -t docker.io/chaoskey/julialab julialab

if [ $? -ne 0 ]; then
    echo "Build julialab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi

docker build -t docker.io/chaoskey/scimllab scimllab

if [ $? -ne 0 ]; then
    echo "Build scimllab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi

docker build -t docker.io/chaoskey/gridaplab gridaplab

if [ $? -ne 0 ]; then
    echo "Build gridaplab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi

docker build -t docker.io/chaoskey/firedrakelab firedrakelab

if [ $? -ne 0 ]; then
    echo "Build firedrakelab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi

docker build -t docker.io/chaoskey/fenicsxlab fenicsxlab

if [ $? -ne 0 ]; then
    echo "Build fenicsxlab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi


tmp=$(alias | grep podman)
if [ "$tmp"x == x ]; then
    docker build -t docker.io/chaoskey/fenicslab fenicslab
else
    tmp=$(sudo docker images | grep fenicslab | grep From)
    if [ "$tmp"x == x ]; then
        # 由于podman下，这个镜像无法缓存，不知道原因，
        # 目前特意添加了一个中间层来解决这个问题
        sudo docker build -t docker.io/chaoskey/fenicslab:From -f fenicslab/Dockerfile_From
    fi
    # 确保容器中命令`run x11_audio`可以正常执行
    sudo docker build -t docker.io/chaoskey/fenicslab -f fenicslab/Dockerfile_podman
fi

if [ $? -ne 0 ]; then
    echo "Build fenicslab Failed!"
    if [ "$0"x == "-bashx" ]; then
        return 1
    else
        exit 1
    fi
fi

